// noinspection JSUnusedGlobalSymbols

/**
 * 函数: 输入 T, 输出 R
 */
export type Function<T, R> = (arg: T) => R

/**
 * 两个入参的 {@link Function}
 */
export type BiFunction<T, Y, R> = (t: T, y: Y) => R

/**
 * 谓词: 判断
 * 输入 T, 输出 Boolean
 */
export type Predicate<T> = Function<T, boolean>

/**
 * 两个入参的谓词 {@link Predicate}
 */
export type BiPredicate<T, R> = BiFunction<T, R, boolean>

/**
 * 供应商
 * 无输入, 输出 R
 */
export type Supplier<R> = () => R

/**
 * 消费者
 * 输入 T, 无输出
 */
export type Consumer<T> = (arg: T) => void

/**
 * 两个入参的消费者 {@link Consumer}
 */
export type BiConsumer<T, R> = (t: T, r: R) => void

/**
 * 纯粹的回调, 不接受任何值, 不返回任何值 (可能抛出异常)
 */
export type PureCallback = () => void
